/**
 * 
 */
package com.dream.house.utils;

import java.util.Collection;

/**
 * <p> Project: 服务达人[分页常用工具类] </p>
 * <p>Function: [功能模块：分页常用工具类] </p>
 * <p> Description: [功能描述：分页常用工具类]
 * </p>
 * <p> Copyright: Copyright(c) 2009-2018 税友集团 </p>
 * <p>
 * Company: 税友软件集团有限公司
 * </p>
 * @author servyou
 * @version 1.0
 */
public class PageUtil {
	public static PageList createPageList(PageBounds pageBounds, int total, Collection list) {
        return createPageList(pageBounds.getStart(), pageBounds.getPageSize(), total, list);
    }

    /**
     * 得到一个PageList 对象,total是表示总数量,objectList:是此次所包容的数据实体列表
     *
     * @param start 页面开始的行数 比如每页20条:第一页 从第 1 开始 第二页从21开始
     * @param pageSize 每页的数量
     * @param total 总数量
     * @param objectList 此次请求的数据对象列表
     */
    public static PageList createPageList(int start, int pageSize, int total, Collection objectList) {
        Paginator paginator = new Paginator();

        paginator.setItemsPerPage(pageSize);

        if (pageSize == 0) {
            paginator.setPage(0);
        }else {
            paginator.setPage((start / pageSize) + 1);
        }

        paginator.setItemsPerPage(pageSize);
        paginator.setItems(total);

        PageList pageList = new PageList();

        pageList.setPaginator(paginator);

        if ((paginator.getItems() > 0) && (objectList != null) && (objectList.size() > 0)) {
            pageList.setResult(objectList);
        }

        return pageList;
    }

    /**
     * 根据查询出的结果数与每页显示的记录数，来校正页数。 这是为了避免传递过来的页数的不可靠性带来的查询无结果的情况。
     *
     * @param total
     * @param pageSize
     * @param iPage
     */
    public static int adjustPage(int total, int pageSize, int iPage) {
        Paginator paginator = new Paginator(pageSize, total);
        paginator.setPage(iPage);
        return paginator.getPage();
    }

    /**
     * 根据查询出的结果数与每页显示的记录数，来校正起始数。 这是为了避免传递过来的起始数的不可靠性带来的查询无结果的情况。
     *
     * @param total
     * @param pageSize
     * @param startNum
     */
    public static int adjustStartNum(int total, int pageSize, int startNum) {
        Paginator paginator = new Paginator(pageSize, total);
        paginator.setItem(startNum);
        return paginator.getBeginIndex();
    }
}
